// 控制应用生命周期和创建原生浏览器窗口的模组
const { Tray,Menu,app, BrowserWindow, screen, ipcMain,globalShortcut } = require("electron");
const path = require("path");
let tray = null
function createWindow() {
  // 创建浏览器窗口
  let size = screen.getPrimaryDisplay().workAreaSize;
  let initialHeight = 168;
  let initialWidth = 400;
  const mainWindow = new BrowserWindow({
    x: size.width - initialWidth,
    y: size.height - initialHeight,
    width: initialWidth,
    height: initialHeight,
    frame: false,
    alwaysOnTop: true,
    webPreferences: {
      preload: path.join(__dirname, "preload.js"),
      devTools: false
    },
  });
  ipcMain.on("set-window", (event,height) => {
    mainWindow.setBounds({ y: size.height-height, height: height });
  });
  // 加载 index.html
  mainWindow.loadFile("dist/index.html"); // 此处跟electron官网路径不同，需要注意
  // 打开开发工具
  // mainWindow.webContents.openDevTools();
  return mainWindow;
}
// 这段程序将会在 Electron 结束初始化
// 和创建浏览器窗口的时候调用
// 部分 API 在 ready 事件触发后才能使用。
app.whenReady().then(() => {
  const win = createWindow();
  win.hide()
  tray = new Tray(path.join(__dirname,'./dist/favicon.ico'))
  const contextMenu = Menu.buildFromTemplate([
    { label: '显示', type:'checkbox',checked: false,click:(itemBox)=>{itemBox.checked?win.show():win.hide()}},
    { label: '退出', click:()=>{app.quit()}},
  ])
  tray.setToolTip('SimpleTrans')
  tray.setContextMenu(contextMenu)
  const ret = globalShortcut.register('Alt+Q', () => {
    let isChecked = contextMenu.items[0].checked
    contextMenu.items[0].checked=!isChecked
    isChecked?win.hide():win.show()
  })
  // app.on("activate", function () {
  //   // 通常在 macOS 上，当点击 dock 中的应用程序图标时，如果没有其他
  //   // 打开的窗口，那么程序会重新创建一个窗口。
  //   if (BrowserWindow.getAllWindows().length === 0) createWindow();
  // });
});

app.setLoginItemSettings({
  openAtLogin: true,
  openAsHidden:true,
  path: process.execPath,
  name: '简译'
})
// 除了 macOS 外，当所有窗口都被关闭的时候退出程序。 因此，通常对程序和它们在
// 任务栏上的图标来说，应当保持活跃状态，直到用户使用 Cmd + Q 退出。
app.on("window-all-closed", function () {
  if (process.platform !== "darwin") app.quit();
});

// 在这个文件中，你可以包含应用程序剩余的所有部分的代码，
// 也可以拆分成几个文件，然后用 require 导入。
